<?php 
/**
 * var_dump()打印
 * */
function vard($data)       //打印
{
	var_dump($data);die;
}

/**
 * print_r()打印
 * */
function p($data)
{
	print_r($data);die;
}

/**
 * $str:消息
 * $url:跳转路径
 * */
function alert_msg($str='', $url='', $i=0)   //消息弹框(1秒后消失)
{
	header("Content-Type:text/html;Charset=UTF-8");
	if ($url) {
	    $i = $i ? $i : 1;
	    $url = strpos($url, 'http')===false ? base_url($url) : $url;
	} else {
	    $i = 2;
	}
	inc_js('lib/jquery.min');
	inc_js('plugins/layer/layer');
	echo '<script style="Text/Javascript">;$(function(){';
	echo 'var alertMsg = function(str, url, i){layer.msg(str, {icon:i, time:2000, offset:"200px"}, function(){if(url){location.href=url;} else {window.history.back();}});};';
	echo 'alertMsg("' . $str . '", "' . $url . '", "' . $i . '");});</script>';
	die;  
}

/**
 * 
 * */
function alert_confirm($str='是否确认删除？', $url='Cindex/index', $str1='下次再说', $url1='Cindex/index')   //消息弹框(1秒后消失)
{
    header("Content-Type:text/html;Charset=UTF-8");
    $url = base_url($url);
    $url1 = base_url($url1);
    inc_js('lib/jquery.min');
    inc_js('plugins/layer/layer');
    echo '<script style="Text/Javascript">';
    echo ';$(function(){var con_firm= function(str, url, str1, url1){layer.confirm(str, {title:"请确认下面信息：", btn: ["确认", "取消"], offset:"200px"}, function(){location.href=url;}, function(){layer.msg(str1, {icon:1, time: 1000, area:["300px", "100px"], offset:"200px"}, function(){location.href=url1;});});};';
    echo 'con_firm("' . $str . '", "' . $url . '", "' . $str1 . '", "' . $url1 . '");});';
    echo '</script>';
    die;
}

/**
 * $file_name:js文件
 * */
function inc_js($file_name)     //引入js文件
{
	echo '<script type="text/javascript" src="' . base_url() . 'assets/js/' . $file_name . '.js"></script>';
}

/**
 * $file_name:css文件
 * */
function inc_css($file_name) //引入CSS文件
{
	echo '<link rel="stylesheet" type="text/css" href="' . base_url() . 'assets/css/' . $file_name . '.css"  media="screen" />';
}

/**
 * $file_name:css文件
 * */
function inc_pic($file_name) //引入原图
{
    echo base_url('assets/pic/'.$file_name);
}

/**
 * $file_name:css文件
 * */
function inc_img($file_name) //引入背景图
{
    echo base_url('assets/images/'.$file_name);
}

/**
 * $str：需加密字符串
 * $pre：加密前缀
 * */
function UH_md5($str, $pre='U_Helper2016'){
    return md5($pre.md5(trim($str)));
}

/**
 * $str:要截取的字符串
 * $num:截取长度
 * @return 截取后字符串
 * */
function cutstr($str, $num) {  //截取字符串
	if (mb_strlen($str, 'utf-8') > $num) {
		$str = mb_substr($str, 0, $num, 'utf-8').'...';
	}
	return $str;
}

/**
 * $len:毫秒长度
 * @return 20150101010101($len) 样式
 * */
function micdate($len=1)  //毫秒时间
{
	$time = explode(' ', microtime());
	return date('YmdHis', $time[1]) . '_' . mb_substr($time[0], 2, $len);
}

/**
 * $obj:对象
 * @return 数组
 * */
function ob2ar($obj)   // 对象转换成数组
{
	if(is_object($obj)) 
	{
		$obj = (array)$obj;
		$obj = ob2ar($obj);
	} else if(is_array($obj)){
		foreach ($obj as $key => $value) 
		{
			$obj[$key] = ob2ar($value);
		}
	}
	return $obj;
}

/**
 * $obj:对象
 * @return 数组
 * */
function objectToArray($obj)  //对象转化为数组
{
    $_arr = is_object($obj)? get_object_vars($obj) :$obj;
    foreach ($_arr as $key => $val){
        $val=(is_array($val)) || is_object($val) ? objectToArray($val) :$val;
        $arr[$key] = $val;
    }
    return $arr;
}

/**
 * $data:数组或字符串
 * @return boolean 
 * */
function one_empty($data)  //判断是否有空值,至少有一个空值返回true
{
	if(is_array($data))
	{
		foreach ($data as $v)
		{
			$val = trim($v);
			if(empty($val)) return true;
		}
	} else {
		$val = trim($data);
		if(empty($val)) return true;
	}
	return false;
}

/**
 * @param unknown $mobile
 * @return boolean
 */
function is_mobile($mobile)
{
    return (!preg_match('/^1[34578]\d{9}$/', $mobile)) ? FALSE : TRUE;
}

/**
 * @param string $phone
 * @return boolean
 */
function is_phone($phone)
{
    return (!preg_match('/^1\d{10}$|^(0\d{2,3}-?|\(0\d{2,3}\))?[1-9]\d{4,7}(-\d{1,8})?$/', $phone)) ? FALSE : TRUE;
}

/**
 * $data:传值,数组或字符串
 * @return boolean 
 * */
function is_empty($data)  //判断是否为空,全为空返回true
{
	$is_empty = false;
	if (is_array($data)) 
	{ 
		$arrStr = '';
		foreach ($data as $val) 
		{
			$arrStr .= trim($val);
		}
		if(empty($arrStr)) $is_empty = true;
	} else {
		$val = trim($data);
		if(empty($val)) $is_empty = true;
	}
	return $is_empty;
}

/**
 * $email:邮箱
 * @return boolean
 * */
function is_email($email)  //判断是否是邮箱
{
	$is_email = false;
	$reg = '/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/';
	if(preg_match($reg, $email)) $is_email = true;
	return $is_email;
}

/**
 * $arr:邮箱数组
 * @return 验证通过的邮箱数组
 * */
function is_email_arr($arr)  //验证邮箱数组
{
	$reg = '/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/';
	for ($i=0;$i<count($arr);$i++)
	{
		if(preg_match($reg, $arr[$i]))
		{
			$email[] = $arr[$i];
		}
	}
	return $email;
}

/**
 * $date:日趋格式2001-01-01
 * @return boolean
 * */
function is_date($date)
{
    $is_date = false;
    $reg = '/^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$/';
    if(preg_match($reg, $date)) $is_date = true;
    return $is_date;
}

/**
 * $password:密码格式，包含字母数字和下划线
 * @return boolean
 * */
function is_password($password)
{
    $is_password = false;
    $reg = '/^[\w_]{6,15}$/';
    if(preg_match($reg, $password)) $is_password = true;
    return $is_password;
}

/**
 * 获取ip
 * @return:ip
 * */
function getIp()  
{
    $ip = '0.0.0.0';
	if(!empty($_SERVER['HTTP_CLIENT_IP']))
	{
		$ip = $_SERVER['HTTP_CLIENT_IP'];
	} else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	} else {
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}

/**
 * $arr:数组
 * $pid:父级id
 * @return $tree:树形数组
 * */
function arrTree($arr, $pid=0)    
{
	$tree = array();
	foreach ($arr as $k => $v)
	{
		if($v['parentid'] == $pid) {
			$tmp = $arr[$k];
			unset($arr[$k]);
			$tmp['children'] = arrTree($arr, $v['id']);
			$tree[] = $tmp;
		}
	}
	return $tree;
}

/**
 * @param number $len:字符长度
 * @param string $str:字符串
 * @return:一定长度的随机字符串
 * */
function randomStr($len=4, $str='abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')    
{
	$word = '';
	for ($i=0;$i<$len;$i++){
		$word.=$str[mt_rand(0, strlen($str)-1)];
	}
	return $word;
}

/**
 * $filedir：目录
 * @return:$file_name:文件夹下文件名称数组
 * */
function showDir( $filedir = '.' ) {
    $dir = @ dir($filedir);
    while (($file = $dir->read())!==false)
    //while(($file = readdir($dir)) !== false)
    {
        if(is_dir($filedir . "/" . $file) AND ($file!=".") AND ($file!="..")) 
        {
            showDir($filedir . "/" . $file);
        } else {
            $file_name[] = $filedir . "/" . $file;
        }
    }
    $dir->close();
    return $file_name;
}

/**
 * 生成文件
 * $file:需要写入的文件或者二进制流
 * $filename:需要生成的文件名的绝对路径
 **/
function createfile($file, $filename)
{
    $write = @fopen($filename, "w");
    if($write==false)
    {
        return false;
    }
    if(fwrite($write, $file)==false)
    {
        return false;
    }
    if(fclose($write)==false)
    {
        return false;
    }
    return true;
}

/**
 * 人民币小写转大写
 *
 * @param string $number   待处理数值
 * @param bool   $is_round 小数是否四舍五入,默认"四舍五入"
 * @param string $int_unit 币种单位,默认"元"
 * @return string
 */
function rmb_format($money = 0, $is_round = true, $int_unit = '元') {
    $chs     = array (0, '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
    $uni     = array ('', '拾', '佰', '仟' );
    $dec_uni = array ('角', '分' );
    $exp     = array ('','万','亿');
    $res     = '';
    // 以 元为单位分割
    $parts   = explode ( '.', $money, 2 );
    $int     = isset ( $parts [0] ) ? strval ( $parts [0] ) : 0;
    $dec     = isset ( $parts [1] ) ? strval ( $parts [1] ) : '';
    // 处理小数点
    $dec_len = strlen ( $dec );
    if (isset ( $parts [1] ) && $dec_len > 2) {
        $dec = $is_round ? substr ( strrchr ( strval ( round ( floatval ( "0." . $dec ), 2 ) ), '.' ), 1 ) : substr ( $parts [1], 0, 2 );
    }
    // number= 0.00时，直接返回 0
    if (empty ( $int ) && empty ( $dec )) {
        return '零';
    }
    
    // 整数部分 从右向左
    for ($i = strlen ( $int ) - 1, $t = 0; $i >= 0; $t++) {
        $str = '';
        // 每4字为一段进行转化
        for ($j = 0; $j < 4 && $i >= 0; $j ++, $i --) {
            $u   = $int{$i} > 0 ? $uni [$j] : '';
            $str = $chs [$int {$i}] . $u . $str;
        }
        $str = rtrim ( $str, '0' );
        $str = preg_replace ( "/0+/", "零", $str );
        $u2  = $str != '' ? $exp [$t] : '';
        $res = $str . $u2 . $res;
    }
    $dec = rtrim ( $dec, '0' );
    // 小数部分 从左向右
    if (!empty ( $dec )) {
        $res .= $int_unit;
        $cnt =  strlen ( $dec );
        for ($i = 0; $i < $cnt; $i ++) {
            $u = $dec {$i} > 0 ? $dec_uni [$i] : ''; // 非0的数字后面添加单位
            $res .= $chs [$dec {$i}] . $u;
        }
        if ($cnt == 1) $res .= '整';
        $res = rtrim ( $res, '0' ); // 去掉末尾的0
        $res = preg_replace ( "/0+/", "零", $res ); // 替换多个连续的0
    } else {
        $res .= $int_unit . '整';
    }
    return $res;
}

/**
 * 根据经纬度获取距离
 * @param string $lnglat1：原点经纬度
 * @param string $lnglat2：目标经纬度
 * */
function get_dis($lnglat1, $lnglat2)
{
    $lnglat1_arr = explode(',', $lnglat1);
    $lnglat2_arr = explode(',', $lnglat2);
    $lat1 = $lnglat1_arr[1];
    $lng1 = $lnglat1_arr[0];
    $lat2 = $lnglat2_arr[1];
    $lng2 = $lnglat2_arr[0];
    return round(6378.138*2*asin(sqrt(pow(sin( ($lat1*pi()/180-$lat2*pi()/180)/2),2) + cos($lat1*pi()/180) * cos($lat2*pi()/180) * pow(sin(($lng1*pi()/180-$lng2*pi()/180)/2),2)))*1000);
}

/**
 * 根据经纬度获取地址信息
 * @param string $lnglat：经纬度（默认杭州）
 * */
function get_address_by_lnglat($lnglat='')
{
    $lnglat = empty($lnglat) ? '120.181139,30.316008' : $lnglat;
    $lnglat_arr = explode(',' ,$lnglat);
    $lat = empty($lnglat_arr[1]) ? '30.316008' : $lnglat_arr[1];
    $lng = empty($lnglat_arr[0]) ? '120.181139' : $lnglat_arr[0];
    $content = file_get_contents("http://api.map.baidu.com/geocoder/v2/?ak=1dc771f8e1d5ab15e12a9503773c18f3&location={$lat},{$lng}&output=json&pois=0");
    return json_decode($content);
}

/**
 * @根据ip获取经纬度及地址
 * */
function get_lnglat_by_ip()
{
    $getIp = getIp();
    if (in_array($getIp, array('127.0.0.1', '0.0.0.0'))) {
        return false;
    }
    $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=1dc771f8e1d5ab15e12a9503773c18f3&ip={$getIp}&coor=bd09ll");
    $json = json_decode($content);
    $lnglat = $json->{'content'}->{'point'}->{'x'}.','.$json->{'content'}->{'point'}->{'y'};
    $add = $json->{'content'}->{'address'};
    $prov = $json->{'content'}->{'address_detail'}->{'province'};
    $city = $json->{'content'}->{'address_detail'}->{'city'};
    return array('lnglat'=>$lnglat, 'address'=>$add, 'province'=>$prov, 'city'=>$city);
}

/**
 * @根据地址获取经纬度及地址
 * */
function get_lnglat_by_address($address, $city)
{
    $content = file_get_contents("http://api.map.baidu.com/geocoder/v2/?ak=1dc771f8e1d5ab15e12a9503773c18f3&output=json&address={$address}&city={$city}");
    $json = json_decode($content);
    if (empty($json->{'result'})) {
        $content = file_get_contents("http://api.map.baidu.com/geocoder/v2/?ak=1dc771f8e1d5ab15e12a9503773c18f3&output=json&address={$city}");
        $json = json_decode($content);
    }
    $lnglat = $json->{'result'}->{'location'}->{'lng'}.','.$json->{'result'}->{'location'}->{'lat'};
    return $lnglat;
}

